home *** CD-ROM | disk | FTP | other *** search
/ Hobby PC 32 / Hobby PC 32.iso / extras / WIN31 / DATA.Z / DESIGN3D.MST < prev    next >
Text File  |  1995-02-26  |  11KB  |  454 lines

  1. '**************************************************************************
  2. '*                        Virtus WalkThrough Pro Setup
  3. '*
  4. '*                        Lovingly hand-crafted
  5. '*                        and polished by John Alspaugh
  6. '*         Copyright 1993-1994 Virtus Corporation.  All Rights Reserved.
  7. '*
  8. '**************************************************************************
  9.  
  10. '''''$DEFINE DEBUG  ''Define for script development/debugging
  11.  
  12. ''Bitmap ID
  13. CONST LOGO         = 1
  14.  
  15. ''File Types
  16. GLOBAL RADIOBUTTON$     ''Option selection from OptFiles1 option dialog.
  17. GLOBAL PROGGROUP$    'Name of the program manager group
  18. GLOBAL ENORMOUS%    ''too big -- true or false? (1 or 0)
  19.  
  20. ''Dialog list symbol names
  21. GLOBAL CHECKSTATES$
  22. GLOBAL STATUSTEXT$
  23. GLOBAL DRIVETEXT$
  24. GLOBAL ERRORDLG%
  25. GLOBAL GREYEDLIST$
  26.  
  27. ''Potential error code for the magic exit
  28. GLOBAL POTENTIALERROR%
  29.  
  30.  
  31.  
  32. '' includes must be in this order!
  33. '$INCLUDE 'setupapi.inc'
  34. '$INCLUDE 'msdetect.inc'
  35. '$INCLUDE 'vutility.inc'      '' handy utility routines
  36. '$INCLUDE 'dc3local.inc'      '' the local definitions we use
  37. '$INCLUDE 'vsupport.inc'    '' our more general routines (requires vlocal.inc)
  38.  
  39.  
  40.  
  41. '$ifdef PROGRAM
  42. ''Dialog ID's
  43. CONST WELCOME_DLG        = 100
  44. CONST BILLBOARD0        = 110
  45. CONST BILLBOARD1        = 111
  46. CONST BILLBOARD2        = 112
  47. CONST BILLBOARD3        = 113
  48. CONST BILLBOARD4        = 114
  49. CONST BILLBOARD5        = 115
  50. CONST ASKQUIT_DLG        = 200
  51. CONST DESTPATH_DLG         = 300
  52. CONST EXITFAILURE_DLG    = 400
  53. CONST EBADSERIAL_DLG    = 401
  54. CONST ENOINSTALL_DLG      = 402
  55. CONST CORRUPT_FILES_DLG = 412
  56. CONST EXITQUIT_DLG        = 600
  57. CONST EXITSUCCESS_DLG    = 700    '' ok, and you should restart (but you don't have to)
  58. CONST EXITSUCCESSBYE_DLG= 701    '' ok, and you will now restart
  59. CONST WELCOMEHELP_DLG    = 900
  60. CONST CUSTINSTHELP_DLG    = 901
  61. CONST PATHHELP_DLG        = 902
  62. CONST PERSONALHELP_DLG    = 903
  63. CONST INSTALLHELP_DLG    = 904
  64. CONST INSTALL_DLG        = 6100
  65. CONST CUSTINST_DLG        = 6200
  66. CONST TOOBIG_DLG        = 6300
  67. CONST BADPATH_DLG        = 6400
  68. CONST PERSONALIZE_DLG    = 7500
  69. '$ELSE IF LIBRARY
  70. CONST WELCOME_DLG        = 150
  71. CONST ASKQUIT_DLG        = 250
  72. CONST DESTPATH_DLG        = 350
  73. CONST NO_WIN_3_1_DLG     = 410
  74. CONST WRONG_CPU_DLG     = 411
  75. CONST CORRUPT_FILES_DLG = 412
  76. CONST EXITFAILURE_DLG    = 450
  77. CONST EXITQUIT_DLG        = 650
  78. CONST EXITSUCCESS_DLG    = 750
  79. CONST WELCOMEHELP_DLG    = 950
  80. CONST PATHHELP_DLG        = 952
  81. CONST TOOBIG_DLG        = 6350
  82. CONST NOVRDIR_DLG        = 6351
  83. CONST LOOKFORFILE_DLG    = 6352
  84. CONST BADPATH_DLG        = 6400
  85. '$endif
  86.  
  87.  
  88. INIT:
  89.     CUIDLL$ = "mscuistf.dll"            'Custom user interface dll
  90.     HELPPROC$ = "FHelpDlgProc"          'Help dialog procedure
  91.     POTENTIALERROR% = 0
  92.     
  93.     VL_Initialize          '' init all the local vars
  94.     VL_InitDiskCosts      '' init the disk cost stuff
  95.     VL_InitDirNames     '' init the directory naming stuff
  96.     VL_InitReadmeFileNames
  97.  
  98.     VMaximizeFrame
  99.  
  100.     SetBitmap CUIDLL$, LOGO
  101.     SetTitle PRODUCTNAME$
  102.  
  103.     '' test that the system is up to our requirements.  If not, Bye!
  104.     sysOk% = VIsSystemAdequate()
  105.     IF sysOk% = 0 THEN
  106.         GOTO ENDITALL    '' byeeee!
  107.     END IF
  108.  
  109.     '' load INF file
  110.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  111.     IF szInf$ = "" THEN
  112.         szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILENAME$
  113.     END IF
  114.     ReadInfFile szInf$
  115.  
  116.     ''CustInst list symbols
  117.     CHECKSTATES$ = "CheckItemsState"
  118.     STATUSTEXT$  = "StatusItemsText"
  119.     DRIVETEXT$   = "DriveStatusText"
  120.     GREYEDLIST$  = "OptionsGreyed"
  121.     FOR i% = 1 TO N_CHECKBOXES STEP 1
  122.         AddListItem CHECKSTATES$, "ON"
  123.     NEXT i%
  124.     FOR i% = 1 TO N_CHECKBOXES STEP 1
  125.         AddListItem STATUSTEXT$, ""
  126.     NEXT i%
  127.     FOR i% = 1 TO 7 STEP 1     '' there are 7 items in DriveStatusText.  Always.
  128.         AddListItem DRIVETEXT$, ""
  129.     NEXT i%
  130.     ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
  131.  
  132.     ENORMOUS% = 0
  133.     RADIOBUTTON$ = "1"
  134.  
  135.     VL_RecalcPath
  136.  
  137. '$IFDEF DEBUG
  138.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  139. '$ENDIF 'DEBUG
  140.  
  141. WELCOME:
  142.     sz$ = UIStartDlg(CUIDLL$, WELCOME_DLG, "FInfoDlgProc", WELCOMEHELP_DLG, HELPPROC$)
  143.     IF sz$ = "CONTINUE" THEN
  144.         UIPop 1
  145.     ELSE
  146.         GOSUB ASKQUIT
  147.         GOTO WELCOME
  148.     END IF
  149.  
  150.     
  151. '$IFDEF OPTION
  152. '$ifdef 0
  153. ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  154. IF ENORMOUS% <> 0 THEN
  155.     RADIOBUTTON$ = "2"
  156.     AddListItem GREYEDLIST$, "1"   '' grey full install
  157.  ''    GOTO CUSTINST
  158. END IF
  159. '$endif
  160.  
  161. INSTALLOPT:
  162.     SetSymbolValue "RadioDefault", RADIOBUTTON$  '' set the button
  163.  
  164.     sz$ = UIStartDlg(CUIDLL$, INSTALL_DLG, "FRadioDlgProc", INSTALLHELP_DLG, HELPPROC$)
  165.     RADIOBUTTON$ = GetSymbolValue("ButtonChecked")
  166.  
  167.     ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  168.     IF sz$ = "CONTINUE" THEN
  169.         UIPop 1
  170.         IF RADIOBUTTON$ = "1" THEN
  171.             GOSUB GETPATH
  172.             GOTO INSTALL
  173.         ELSEIF RADIOBUTTON$ = "2" THEN
  174.             '' we get the path within the custinst area
  175.             GOTO CUSTINST
  176.         ELSE
  177.              GOSUB GETPATH
  178.             GOTO INSTALL
  179.         END IF
  180.     ELSEIF sz$ = "REACTIVATE" THEN
  181.         GOTO INSTALLOPT
  182.     ELSEIF sz$ = "EXIT" THEN
  183.         GOSUB ASKQUIT
  184.         GOTO INSTALLOPT
  185.     ELSE
  186.         UIPop 1
  187.         GOTO CUSTINST
  188.     END IF
  189.  
  190.  
  191.  
  192. CUSTINST:
  193.     ''Start up the custom installation dialog box
  194.     sz$ = UIStartDlg(CUIDLL$, CUSTINST_DLG, "FCustInstDlgProc", CUSTINSTHELP_DLG, HELPPROC$)
  195.  
  196.     i% = VL_DoCheckItems(sz$)
  197.     IF i% = 1 THEN
  198.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  199.         GOTO CUSTINST
  200.     END IF
  201.  
  202.     IF sz$ = "CONTINUE" THEN
  203.         ''Install only if it will fit.
  204.         IF ENORMOUS% <> 0 THEN
  205.             GOSUB TOOBIG
  206.             GOTO CUSTINST
  207.         ENDIF
  208.  
  209.         UIPop 1      ''Kill the dialog box
  210.         GOTO INSTALL 
  211.     ELSEIF sz$ = "PATH" THEN
  212.         GOTO GETPATH
  213.     ELSEIF sz$ = "REACTIVATE" THEN
  214.         VL_RecalcPath
  215.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  216.         GOTO CUSTINST
  217.     ELSEIF sz$ = "BACK" THEN
  218.         UIPop 1
  219.         GOTO INSTALLOPT
  220.     ELSE
  221.         GOSUB ASKQUIT
  222.         GOTO CUSTINST
  223.     END IF
  224.  
  225.  
  226. '$ENDIF 'OPTION
  227.  
  228.  
  229.  
  230. GETPATH:
  231.  
  232. '$IFDEF LIBRARY
  233.     i% = VFindExe(EXEFILENAME$, DATAFILEEXT$, DESTDIRNAME$)
  234.  
  235.   NOEXE:
  236.     IF i% = 0 THEN
  237.         DESTDIRNAME$ = WINDRIVE$ + ":\" + DEFDIRNAME$    '' fallback
  238.         sz$ = UIStartDlg(CUIDLL$, NOVRDIR_DLG, "FInfo0DlgProc", 0, "")
  239.         IF sz$ = "REACTIVATE" THEN
  240.             GOTO NOEXE
  241.         END IF
  242.         UIPop 1
  243.     END IF
  244. '$ENDIF 'LIBRARY
  245.  
  246.     VL_RecalcPath
  247.  
  248.     SetSymbolValue "EditTextIn", DESTDIRNAME$
  249.     SetSymbolValue "EditFocus", "END"
  250. GETPATHL1:
  251.     sz$ = UIStartDlg(CUIDLL$, DESTPATH_DLG, "FEditDlgProc", PATHHELP_DLG, HELPPROC$)
  252.  
  253.     IF sz$ = "CONTINUE" THEN
  254.         olddest$ = DESTDIRNAME$
  255.         DESTDIRNAME$ = GetSymbolValue("EditTextOut")
  256.  
  257.         ''Validate new path.
  258.         IF IsDirWritable(DESTDIRNAME$) = 0 THEN
  259.             GOSUB BADPATH
  260.             GOTO GETPATHL1
  261.         END IF
  262.         UIPop 1
  263.  
  264.         'Truncate display if too long.
  265.         IF LEN(DEST$) > 23 THEN
  266.             ReplaceListItem DRIVETEXT$, 7, MID$(DESTDIRNAME$, 1, 23)+"..."
  267.         ELSE
  268.             ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
  269.         END IF
  270.  
  271.         ''Recalc if path changed.
  272.         IF (olddest$ <> DESTDIRNAME$) AND (olddest$ <> DESTDIRNAME$+"\") AND (olddest$+"\" <> DESTDIRNAME$) THEN
  273.             VL_RecalcPath
  274.             ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  275.         END IF
  276.  
  277.         olddest$ = ""
  278. '$IFDEF OPTION
  279.         IF RADIOBUTTON$ = "1" THEN  '' this is the quicky option, right?
  280.             '' check that the new path does not make us need too much disk space
  281.             IF ENORMOUS% <> 0 THEN
  282.                 GOSUB TOOBIG    '' not enough disk space
  283.  
  284.                 RADIOBUTTON$ = "2"
  285.                 GOTO CUSTINST   '' custom install necessary.
  286.             END IF
  287.             '' otherwise, keep going to the next section
  288.         ELSEIF RADIOBUTTON$ = "2" THEN
  289.             GOTO CUSTINST    '' return to the custom install
  290.         ELSE
  291.             FOR i% = 1 TO N_CHECKBOXES STEP 1
  292.                 ReplaceListItem CHECKSTATES$, i%, "OFF"
  293.             NEXT i%
  294.             GOTO INSTALL
  295.         END IF
  296.  
  297. '$ELSE
  298.         IF ENORMOUS% <> 0 THEN
  299.             GOSUB TOOBIG    '' not enough disk space
  300.             GOTO GETPATHL1   '' try again
  301.         END IF
  302. '$ENDIF '' OPTION
  303.  
  304.         GOTO INSTALL
  305.  
  306.  
  307.     ELSEIF sz$ = "REACTIVATE" THEN
  308. ''        VL_RecalcPath
  309. ''        ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  310.         GOTO GETPATHL1
  311.     ELSEIF sz$ = "EXIT" THEN
  312.         GOSUB ASKQUIT
  313.         GOTO GETPATHL1
  314.     ELSEIF sz$ = "BACK" THEN
  315.         UIPop 1
  316.  
  317. '$IFDEF OPTION
  318.         IF (RADIOBUTTON$ = "1") AND (ENORMOU